package com.cardone.platform.authority.service;

import java.util.List;
import java.util.Map;

import com.cardone.common.cache.support.CacheEvictSupport;
import com.cardone.common.dto.PaginationDto;
import com.cardone.platform.authority.dto.RoleDto;
import com.cardone.platform.authority.dto.RolePermissionDto;

/**
 * 角色服务
 * 
 * @author yaoht
 */
public interface RoleService extends CacheEvictSupport {
	/**
	 * spring bean id
	 */
	String BEAN_ID = "com.cardone.platform.authority.service.RoleService";

	/**
	 * 保存:角色
	 * 
	 * @param saveRole
	 *            角色对象
	 * 
	 * @return 角色对象
	 */
	RoleDto saveRoleByIdOrCode(RoleDto saveRole);

	/**
	 * 保存:角色
	 * 
	 * @param saveRole
	 *            角色对象
	 * 
	 * @return 角色对象
	 */
	RoleDto saveRoleByName(RoleDto saveRole);

	/**
	 * 删除:角色
	 * 
	 * @param deleteRole
	 *            角色对象
	 * 
	 * @return 影响行数
	 */
	int deleteRoleByCode(RoleDto deleteRole);

	/**
	 * 删除:角色
	 * 
	 * @param deleteRole
	 *            角色对象
	 * 
	 * @return 影响行数
	 */
	int deleteRoleByIds(RoleDto deleteRole);

	/**
	 * 设置:角色
	 * 
	 * @param updateRole
	 *            角色对象
	 * 
	 * @return 影响行数
	 */
	int updateRoleByCode(RoleDto updateRole);

	/**
	 * 设置:角色
	 * 
	 * @param updateRole
	 *            角色对象
	 * 
	 * @return 影响行数
	 */
	int updateRoleByIds(RoleDto updateRole);

	/**
	 * 读取:角色
	 * 
	 * @param readRole
	 *            角色对象
	 * 
	 * @return 角色对象
	 */
	Integer readRoleByCodeNqId(RoleDto readRole);

	/**
	 * 读取:角色
	 * 
	 * @param readRole
	 *            角色对象
	 * 
	 * @return 角色对象
	 */
	Integer readRoleByName(RoleDto readRole);

	/**
	 * 查询:角色
	 * 
	 * @param findRole
	 *            角色对象
	 * 
	 * @return 角色对象
	 */
	RoleDto findRoleByCode(RoleDto findRole);

	/**
	 * 查询:角色
	 * 
	 * @param findRole
	 *            角色对象
	 * 
	 * @return 角色对象
	 */
	RoleDto findRoleById(RoleDto findRole);

	/**
	 * 查询:角色
	 * 
	 * @param findListRole
	 *            角色对象
	 * 
	 * @return 角色对象集合
	 */
	List<RoleDto> findListRoleByCode(RoleDto findListRole);

	/**
	 * 查询:角色
	 * 
	 * @param findListRole
	 *            角色对象
	 * 
	 * @return 角色对象集合
	 */
	List<RoleDto> findListRoleByName(RoleDto findListRole);

	/**
	 * 分页:角色
	 * 
	 * @param paginationRole
	 *            角色对象
	 * 
	 * @return 角色分页对象
	 */
	PaginationDto<RoleDto> paginationRoleByCode(RoleDto paginationRole);

	/**
	 * 分页:角色
	 * 
	 * @param paginationRole
	 *            角色对象
	 * 
	 * @return 角色分页对象
	 */
	PaginationDto<Map<String, Object>> paginationRoleByName(RoleDto paginationRole);

	/**
	 * 保存:角色与许可
	 * 
	 * @param saveRolePermission
	 *            角色与许可对象
	 * 
	 * @return 角色与许可对象
	 */
	RolePermissionDto saveRolePermissionByIdOrCode(RolePermissionDto saveRolePermission);

	/**
	 * 保存:角色与许可
	 * 
	 * @param saveRolePermission
	 *            角色与许可对象
	 * 
	 * @return 角色与许可对象
	 */
	RolePermissionDto saveRolePermissionByName(RolePermissionDto saveRolePermission);

	/**
	 * 删除:角色与许可
	 * 
	 * @param deleteRolePermission
	 *            角色与许可对象
	 * 
	 * @return 影响行数
	 */
	int deleteRolePermissionByCode(RolePermissionDto deleteRolePermission);

	/**
	 * 删除:角色与许可
	 * 
	 * @param deleteRolePermission
	 *            角色与许可对象
	 * 
	 * @return 影响行数
	 */
	int deleteRolePermissionByIds(RolePermissionDto deleteRolePermission);

	/**
	 * 设置:角色与许可
	 * 
	 * @param updateRolePermission
	 *            角色与许可对象
	 * 
	 * @return 影响行数
	 */
	int updateRolePermissionByCode(RolePermissionDto updateRolePermission);

	/**
	 * 设置:角色与许可
	 * 
	 * @param updateRolePermission
	 *            角色与许可对象
	 * 
	 * @return 影响行数
	 */
	int updateRolePermissionByIds(RolePermissionDto updateRolePermission);

	/**
	 * 读取:角色与许可
	 * 
	 * @param readRolePermission
	 *            角色与许可对象
	 * 
	 * @return 角色与许可对象
	 */
	Integer readRolePermissionByCodeNqId(RolePermissionDto readRolePermission);

	/**
	 * 读取:角色与许可
	 * 
	 * @param readRolePermission
	 *            角色与许可对象
	 * 
	 * @return 角色与许可对象
	 */
	Integer readRolePermissionByName(RolePermissionDto readRolePermission);

	/**
	 * 查询:角色与许可
	 * 
	 * @param findRolePermission
	 *            角色与许可对象
	 * 
	 * @return 角色与许可对象
	 */
	RolePermissionDto findRolePermissionByCode(RolePermissionDto findRolePermission);

	/**
	 * 查询:角色与许可
	 * 
	 * @param findRolePermission
	 *            角色与许可对象
	 * 
	 * @return 角色与许可对象
	 */
	RolePermissionDto findRolePermissionById(RolePermissionDto findRolePermission);

	/**
	 * 查询:角色与许可
	 * 
	 * @param findListRolePermission
	 *            角色与许可对象
	 * 
	 * @return 角色与许可对象集合
	 */
	List<RolePermissionDto> findListRolePermissionByCode(RolePermissionDto findListRolePermission);

	/**
	 * 查询:角色与许可
	 * 
	 * @param findListRolePermission
	 *            角色与许可对象
	 * 
	 * @return 角色与许可对象集合
	 */
	List<RolePermissionDto> findListRolePermissionByName(RolePermissionDto findListRolePermission);

	/**
	 * 分页:角色与许可
	 * 
	 * @param paginationRolePermission
	 *            角色与许可对象
	 * 
	 * @return 角色与许可分页对象
	 */
	PaginationDto<RolePermissionDto> paginationRolePermissionByCode(RolePermissionDto paginationRolePermission);

	/**
	 * 分页:角色与许可
	 * 
	 * @param paginationRolePermission
	 *            角色与许可对象
	 * 
	 * @return 角色与许可分页对象
	 */
	PaginationDto<Map<String, Object>> paginationRolePermissionByName(RolePermissionDto paginationRolePermission);
}